package demo08;

/**
 * @author: WangPeng
 * @createTime: 2022/11/07 18:14
 * @description:
 * @version: v1.0
 */
public class SingletonLazyTypeDoubleLock {
    //第一步：声明一个静态的本类对象--饿汉式
    private static SingletonLazyTypeDoubleLock singleton ;
    //第二步：私有化构造方法--外界无法直接创建该类的对象
    private SingletonLazyTypeDoubleLock(){ }
    //第三步：提供一个静态方法--供外界获取该类对象
    public static SingletonLazyTypeDoubleLock getSingleton(){
        //如果多个线程进来后发现sington不等于null,则无需在获取锁对象
        if (singleton == null){
            //当singlteon为空时，获取锁对象
            synchronized (SingletonLazyTypeDoubleLock.class){
                //如果对象不等于null则无需创建对象
                if (singleton == null){
                    singleton=new SingletonLazyTypeDoubleLock();
                }
            }
       }
       return singleton;
    }
    public void show(){
        System.out.println("hahahahaha");
    }
}
